package com.xmy.cultivate.service;

import com.xmy.cultivate.entity.*;
import com.xmy.cultivate.entity.views.AiSitePcLoginRs;
import com.xmy.cultivate.entity.views.IntegralStatisticsRs;
import com.xmy.cultivate.respons.QyWeChartPushRs;
import com.xmy.cultivate.respons.ResStudentAccount;

import java.time.LocalDate;
import java.util.Map;

public interface IMqPushService {

    void updateStudentAccount(Integer yeartPart, Integer quarterNum, Long studentId, Long subjectsId);

    void updateStudentGradeLast(Integer yearPart, Integer quarterNum, Long studentId, Long subjectsId, Integer lessonType);

    void updateIsPresort(Long schoolId, Long studentId, Integer yearPart, Integer quarterNum, Long subjectsId, Integer lessonType);

    void updateIsPresortForRecord(Long schoolId, Long studentId, Integer yearPart, Integer quarterNum, Long subjectsId, Integer lessonType);

    void updateReNewTeacher(Long schoolId, Long studentId, Long courseId, Long gradeId);

    void lackCourseLogBatchAdd(Integer yearPart, Integer quarterNum, Long schoolId, Long studentId, Long subjectsId, Integer yearClassId, Long gradeId, Integer type,Integer lackType);

    void addStudentLesson(Long gradeId, Long studentId);

    void autoScheduling(Long gradeId, LocalDate startDateParam);

    boolean autoOrderApply(Integer yearPart, Integer quarterNum, Long schoolId, Long subjectsId, Integer lessonType, Long studentId);

    boolean changeSchoolForStudent(ChangeSchoolDetail changeSchoolDetail);

    boolean addStudentFaceManyDetail(StudentFaceManyDetail studentFaceManyDetail);

    void updateStudentClassType(StudentClassType studentClassType);

    void delStudentGradeUpdateAccount(ResStudentAccount resStudentAccount);

    void listRadeExcludeStudent(RadeExcludeStudent radeExcludeStudent);

    void delStudentFaceData(Long studentId);

    void updateStudentFaceData(Long studentId);

    void studentMerge(Long studentId);

    void applyEnrollData(Student student);

    void updateInviteDetailSigin(Student student);

    void newStudentSchedule(StudentGrade studentGrade);

    void updateMarket(TrackMarket trackMarket);

    void updateTrackDetail(TrackDetail trackDetail);

    void allotPc(AiSitePcLoginRs aiSitePcLoginRs);

    void integralStatistics(IntegralStatisticsRs integralStatisticsRs);

    void chaStudyPlanAccuracy(ChaStudyPlan chaStudyPlan);

    /**
     * 根据精品课给智能课或者刷题班分班
     * @param studentGrade
     */
    void autoAllotStudentGrade(StudentGrade studentGrade);

    void lklPayExpire(String outOrderNo, Long delaySecond);

    void testMq();

    void leaveTeacherStudent(Grade grade);

    void  gradeCustomCreate(Long id,Long createdId);
    void  wecharPush(String objStr);

    void updateQyWecharId(Staff staff);

    void pushContentForQyWeChar(QyWeChartPushRs qyWeChartPushRs);

    void leaveTeacherStudentByStatus(Long teacherId);

    void leaveTeacherStudentByPay(OrderDetail orderDetail);

    void syncIsUpFirst(StudentClassType studentClassType);

    void updateRadeDataBatch(IntegralStatisticsRs statisticsRs);

    void syncUpdateStaff(Staff staff);
}
